package com.xjh.basestudy.javabase.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

public class huoquchengyuanbianliang {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class<?> c = Class.forName("heimaliuyi.reflect.Student");
        //使用Field类获取公共成员变量,返回数组
//        Field[] fields = c3p0pool.getFields();
        //获取所有成员变量,返回数组
        Field[] fields = c.getDeclaredFields();
        for(Field field : fields){
            System.out.println(field);
        }
        System.out.println("--------------------------");
        //获取单个成员变量的对象af
        Field af = c.getField("address");//参数是成员变量的名字
        //反射的做法
        //获取一个无参构造方法的对象
        Constructor<?> con = c.getConstructor();
        //使用此构造方法对象创建新的实例对象
        Object obj = con.newInstance();
        //给单个成员变量对象af赋值
        af.set(obj,"西安");//以构造方法创建出的实例对象作为参数（给obj的成员变量对象af赋值为西安）
        System.out.println(obj);
       /* 不通过反射的做法
        Student s = new Student():
        s.address = "西安";
        System.out.println(s);*/

    }

}
